Iniciando o ambiente
cat("\014")
rm(list = ls())
1- Utilizando o arquivo “Serie_Dados.csv” realize as seguintes etapas:
Serie_Dados <- read.csv("Serie_Dados.csv", sep=";")
#Serie_Dados
Serie_Dados.LN <- log(Serie_Dados[2:13]/rbind(NA,Serie_Dados[2:13][-nrow(Serie_Dados[2:13]),]))
Serie_Dados.LN <- Serie_Dados.LN[-1,]
#Serie_Dados.LN
A maior parte dos estudos financeiros concentram-se na análise de séries temporal dos retornos ao invés do uso da série dos preços dos ativos. A razão de utilizarmos série de retornos tem dois fatores, as informações de retornos atendem aos interesses de investidores e a série de retornos possui propriedades estatísticas mais interessantes do que séries dos preços.
Histogramas:
par(mfrow = c(1, 2))
for (col in 1:ncol(Serie_Dados.LN)) {
hist(Serie_Dados.LN[,col], main = names(Serie_Dados.LN[col]), xlab = "")
}
Desvio Padrao e Media:
sapply(Serie_Dados.LN, function(cl) list(Media=mean(cl,na.rm=TRUE), DesvioPadrao=sd(cl,na.rm=TRUE)))
## VALE5 GOLL4 AMBV4 ITUB4
## Media 0.0001293889 -0.000491604 0.001271904 -3.197417e-05
## DesvioPadrao 0.01838984 0.0324803 0.01426466 0.01833354
## BBDC4 BVMF3 RAPT4 MYPK3
## Media 0.000209532 9.431336e-05 0.0003498633 0.001024337
## DesvioPadrao 0.01708826 0.02193809 0.02011623 0.02255594
## GOAU4 LLXL3 CSAN3 DOLAR
## Media -0.0001969214 -0.001223711 0.0008827886 0.0002516147
## DesvioPadrao 0.02253222 0.04117323 0.01928199 0.007719852
Graficamente, as variações dos retornos da carteira apresentam uma distribuição normal. Os melhores retornos para os piores são: AMBV4; MYPK3; BVMF3; CSAN3; RAPT4; DÓLAR; BBDC4; VALE5; ITUB4; GOAU4; GOLL4; LLXL3. Os últimos quatro retornos são negativos. Os maiores desvios padrões para os menores são: LLXL3; GOLL4; MYPK3; GOAU4; BVMF3; RAPT4; CSAN3; VALE5; ITUB4; BBDC4; AMBV4; DÓLAR. Podemos analisar que o melhor e mais seguro retorno é a AMBR4, porque tem o melhor retorno e um menor desvio padrão.
ACF
par(mfrow = c(1, 2))
for (col in 1:ncol(Serie_Dados.LN)) {
acf(Serie_Dados.LN[,col], main = names(Serie_Dados.LN[col]), xlab = "")
}
PACF
par(mfrow = c(1, 2))
for (col in 1:ncol(Serie_Dados.LN)) {
pacf(Serie_Dados.LN[,col], main = names(Serie_Dados.LN[col]), xlab = "")
}
Nos gráficos de ACF, podemos analisar que todos os retornos convergem rapidamente para zero, então podemos concluir que eles são estacionários como AR(p). O PACF (função de autocorrelação parcial) nos dá correlação entre a variável no instante t e uma de suas defasagens, retirando os efeitos das outras defasagens. Graficamente cada retorno apresenta um padrão.
2- Para cada um dos processos abaixo gere 200 observações. Faça um gráfico da série, ACF e PACF. Comente os resultados.
Definindo uma semente para os numeros aleatorios serem sempre os mesmos:
set.seed(1234)
par(mfrow = c(1, 3))
d <- ts(rnorm(200, 0, 1))
plot(d)
acf(d)
pacf(d)
A serie é estacionária, mas por ser iid tem a PACF igual a 0
Neste caso o coeficiente tem que ser menor que 1 para rodar, então ar = 0.99999
par(mfrow = c(1, 3))
e <- arima.sim(model = list(ar= 0.99999), n=200, innov = rnorm(200,1,25))
plot(e)
acf(e)
pacf(e)
A série não é estacionaria
par(mfrow = c(1, 3))
f <- arima.sim(model = list(ar = 0.7), n = 200, innov = rnorm(200, 0, 1))
plot(f)
acf(f)
pacf(f)
A série é estacionária, ACF com decaimento e grafico de pacf com pico em 1
par(mfrow = c(1, 3))
g <- arima.sim(model = list(ar = -0.8), n = 200, innov = rnorm(200, 0, 1))
plot(g)
acf(g)
pacf(g)
A série é estacionária, acf com decaimento oscilando, pacf pico em 1
par(mfrow = c(1, 3))
h <- arima.sim(model = list(ma = 0.6), n = 200, innov = rnorm(200, 0, 1))
plot(h)
acf(h)
pacf(h)
A série é estacionaria, acf igual a 0 em K>1 e pacf com decaimento oscilando
3- Utilize a série abaixo para resolver cada item.
An example of a time series that can probably be described using an additive model with a trend and no seasonality is the time series of the annual diameter of women’s skirts at the hem, from 1866 to 1911. The data is available in the file http://robjhyndman.com/tsdldata/roberts/skirts.dat (original data from Hipel and McLeod, 1994).
skirts <- read.table("http://robjhyndman.com/tsdldata/roberts/skirts.dat", header = TRUE, skip = 3)
skirts.ts<-ts(skirts, frequency=1, start=c(1866))
#skirts.ts
skirts.components <- ifelse(frequency(skirts.ts)>1,
decompose(skirts.ts,type = c("additive", "multiplicative")),
print("Nao e' possivel decompor uma serie anual, para ser feita a decomposicao a serie deveria ter, no minimo, 2 periodos"))
## [1] "Nao e' possivel decompor uma serie anual, para ser feita a decomposicao a serie deveria ter, no minimo, 2 periodos"
#plot(skirts.components)
par(mfrow = c(2, 2))
acf(skirts.ts)
acf(diff(skirts.ts))
pacf(skirts.ts)
pacf(diff(skirts.ts))
Os ACF da série e da primeira diferença não apresentam muita diferença quando comparados entre si. No gráfico PACF na série apresenta um lag com valor negativo no tempo 2 e na primeira diferença apresenta um lag com valor positivo no tempo 6.
4- Usando a função arima.sim gere as seguintes simulações (300 ptos):
set.seed(1234)
par(mfrow = c(1, 3))
a <- arima.sim(n=300,list(ar = c(.7)))
plot(a)
acf(a)
pacf(a)
par(mfrow = c(1, 3))
b <- arima.sim(n=300,list(ar = c(-.7)))
plot(b)
acf(b)
pacf(b)
par(mfrow = c(1, 3))
c <- arima.sim(n=300,list(ar = c(.3,.5)))
plot(c)
acf(c)
pacf(c)
par(mfrow = c(1, 3))
d <- arima.sim(n=300,list(ma = c(.6)))
plot(d)
acf(d)
pacf(d)
par(mfrow = c(1, 3))
e <- arima.sim(n=300,list(ma = c(-.6)))
plot(e)
acf(e)
pacf(e)
Para cada simulação, plote o gráfico da série, calcule o ACF e PACF. Usando estes resultados conclua como deve ser o comportamento da ACF de PACF de um modelo autoregressivo( AR.)
5- Obtenha a série histórica do PIB Brasil no site: http://www.bcb.gov.br/pre/portalCidadao/cadsis/series.asp?idpai=PORTALBCB Código da série: 1232
Lendo o arquivo do PIB (Editado fora do R por comodidade)
PIB <- read.csv("PIB2.csv")
#PIB
Criando uma Serie Temporal baseado no PIB (data inicio 1 Trimestre de 1991 e frequencia trimestral)
PIB.ts<-ts(PIB, frequency=4, start=c(1991,1))
#PIB.ts
plot.ts(PIB.ts)
PIB.decomposto <- decompose(PIB.ts)
PIB.decomposto
## $x
## Qtr1 Qtr2 Qtr3 Qtr4
## 1991 83.45 87.71 90.98 86.96
## 1992 80.82 85.85 90.16 90.64
## 1993 84.66 89.66 94.70 94.66
## 1994 87.63 91.63 99.90 103.92
## 1995 96.48 99.76 101.69 102.07
## 1996 95.64 100.82 107.77 104.37
## 1997 99.18 105.82 109.47 107.92
## 1998 99.97 107.36 109.39 105.82
## 1999 100.54 106.53 108.34 108.21
## 2000 105.30 110.70 112.91 112.95
## 2001 109.01 113.26 113.23 112.17
## 2002 109.11 115.39 117.44 117.62
## 2003 111.66 116.40 118.12 118.65
## 2004 116.38 123.61 125.54 125.86
## 2005 121.22 128.96 128.18 128.54
## 2006 126.47 131.45 134.26 134.77
## 2007 133.00 139.90 142.40 143.77
## 2008 141.37 148.93 152.53 145.14
## 2009 137.54 145.36 150.29 152.85
## 2010 150.39 158.10 160.70 161.00
## 2011 156.76 163.34 164.11 163.20
## 2012 158.01 164.24 165.66 166.18
## 2013 161.00 169.92 169.68 169.79
## 2014 164.08 168.45 169.27
##
## $seasonal
## Qtr1 Qtr2 Qtr3 Qtr4
## 1991 -4.4701068 0.7147227 2.5420671 1.2133171
## 1992 -4.4701068 0.7147227 2.5420671 1.2133171
## 1993 -4.4701068 0.7147227 2.5420671 1.2133171
## 1994 -4.4701068 0.7147227 2.5420671 1.2133171
## 1995 -4.4701068 0.7147227 2.5420671 1.2133171
## 1996 -4.4701068 0.7147227 2.5420671 1.2133171
## 1997 -4.4701068 0.7147227 2.5420671 1.2133171
## 1998 -4.4701068 0.7147227 2.5420671 1.2133171
## 1999 -4.4701068 0.7147227 2.5420671 1.2133171
## 2000 -4.4701068 0.7147227 2.5420671 1.2133171
## 2001 -4.4701068 0.7147227 2.5420671 1.2133171
## 2002 -4.4701068 0.7147227 2.5420671 1.2133171
## 2003 -4.4701068 0.7147227 2.5420671 1.2133171
## 2004 -4.4701068 0.7147227 2.5420671 1.2133171
## 2005 -4.4701068 0.7147227 2.5420671 1.2133171
## 2006 -4.4701068 0.7147227 2.5420671 1.2133171
## 2007 -4.4701068 0.7147227 2.5420671 1.2133171
## 2008 -4.4701068 0.7147227 2.5420671 1.2133171
## 2009 -4.4701068 0.7147227 2.5420671 1.2133171
## 2010 -4.4701068 0.7147227 2.5420671 1.2133171
## 2011 -4.4701068 0.7147227 2.5420671 1.2133171
## 2012 -4.4701068 0.7147227 2.5420671 1.2133171
## 2013 -4.4701068 0.7147227 2.5420671 1.2133171
## 2014 -4.4701068 0.7147227 2.5420671
##
## $trend
## Qtr1 Qtr2 Qtr3 Qtr4
## 1991 NA NA 86.94625 86.38500
## 1992 86.05000 86.40750 87.34750 88.30375
## 1993 89.34750 90.41750 91.29125 91.90875
## 1994 92.80500 94.61250 96.87625 98.99875
## 1995 100.23875 100.23125 99.89500 99.92250
## 1996 100.81500 101.86250 102.59250 103.66000
## 1997 104.49750 105.15375 105.69625 105.98750
## 1998 106.17000 105.89750 105.70625 105.67375
## 1999 105.43875 105.60625 106.50000 107.61625
## 2000 108.70875 109.87250 110.92875 111.71250
## 2001 112.07250 112.01500 111.93000 112.20875
## 2002 113.00125 114.20875 115.20875 115.65375
## 2003 115.86500 116.07875 116.79750 118.28875
## 2004 120.11750 121.94625 123.45250 124.72625
## 2005 125.72500 126.39000 127.38125 128.34875
## 2006 129.42000 130.95875 132.55375 134.42625
## 2007 136.50000 138.64250 140.81375 142.98875
## 2008 145.38375 146.82125 146.51375 145.58875
## 2009 144.86250 145.54625 148.11625 151.31500
## 2010 154.20875 156.52875 158.34375 159.79500
## 2011 160.87625 161.57750 162.00875 162.27750
## 2012 162.58375 163.15000 163.89625 164.98000
## 2013 166.19250 167.14625 167.98250 168.18375
## 2014 167.94875 NA NA
##
## $random
## Qtr1 Qtr2 Qtr3 Qtr4
## 1991 NA NA 1.49168293 -0.63831707
## 1992 -0.75989316 -1.27222270 0.27043293 1.12293293
## 1993 -0.21739316 -1.47222270 0.86668293 1.53793293
## 1994 -0.70489316 -3.69722270 0.48168293 3.70793293
## 1995 0.71135684 -1.18597270 -0.74706707 0.93418293
## 1996 -0.70489316 -1.75722270 2.63543293 -0.50331707
## 1997 -0.84739316 -0.04847270 1.23168293 0.71918293
## 1998 -1.72989316 0.74777730 1.14168293 -1.06706707
## 1999 -0.42864316 0.20902730 -0.70206707 -0.61956707
## 2000 1.06135684 0.11277730 -0.56081707 0.02418293
## 2001 1.40760684 0.53027730 -1.24206707 -1.25206707
## 2002 0.57885684 0.46652730 -0.31081707 0.75293293
## 2003 0.26510684 -0.39347270 -1.21956707 -0.85206707
## 2004 0.73260684 0.94902730 -0.45456707 -0.07956707
## 2005 -0.03489316 1.85527730 -1.74331707 -1.02206707
## 2006 1.52010684 -0.22347270 -0.83581707 -0.86956707
## 2007 0.97010684 0.54277730 -0.95581707 -0.43206707
## 2008 0.45635684 1.39402730 3.47418293 -1.66206707
## 2009 -2.85239316 -0.90097270 -0.36831707 0.32168293
## 2010 0.65135684 0.85652730 -0.18581707 -0.00831707
## 2011 0.35385684 1.04777730 -0.44081707 -0.29081707
## 2012 -0.10364316 0.37527730 -0.77831707 -0.01331707
## 2013 -0.72239316 2.05902730 -0.84456707 0.39293293
## 2014 0.60135684 NA NA
##
## $figure
## [1] -4.4701068 0.7147227 2.5420671 1.2133171
##
## $type
## [1] "additive"
##
## attr(,"class")
## [1] "decomposed.ts"
plot(PIB.decomposto)
Usando Predict:
if(!require(forecast)) {
install.packages("forecast")
library(forecast)
}
## Loading required package: forecast
PIB.dif <- diff(PIB.ts[(nrow(PIB.ts)-12*4):nrow(PIB.ts)])
PIB.predict <- predict(auto.arima(PIB.dif),ahead = 1)
PIB.predict
## $pred
## Time Series:
## Start = 49
## End = 49
## Frequency = 1
## [1] 3.342682
##
## $se
## Time Series:
## Start = 49
## End = 49
## Frequency = 1
## [1] 3.779094
Usando Forecast:
etsfit.PIB.dif <- ets(PIB.dif)
etsfit.PIB.dif
## ETS(A,N,N)
##
## Call:
## ets(y = PIB.dif)
##
## Smoothing parameters:
## alpha = 1e-04
##
## Initial states:
## l = 1.0451
##
## sigma: 4.3916
##
## AIC AICc BIC
## 331.8250 332.3705 337.4386
accuracy(etsfit.PIB.dif)
## ME RMSE MAE MPE MAPE MASE
## Training set 0.03456298 4.299119 3.433323 38.41953 136.8852 0.6138396
## ACF1
## Training set -0.2304208
fcast.PIB.dif <- forecast(etsfit.PIB.dif)
#fcast.PIB.dif
plot(fcast.PIB.dif)
Usando ARIMA:
arimafit.PIB.dif <- auto.arima(PIB.dif)
fcast.ARIMA.PIB.dif <- forecast(arimafit.PIB.dif)
#fcast.ARIMA.PIB.dif
plot(fcast.ARIMA.PIB.dif)
Usando Forecast (sem usar a diferença):
etsfit.PIB.ts <- ets(PIB.ts[(nrow(PIB.ts)-12*4):nrow(PIB.ts)])
etsfit.PIB.ts
## ETS(M,A,N)
##
## Call:
## ets(y = PIB.ts[(nrow(PIB.ts) - 12 * 4):nrow(PIB.ts)])
##
## Smoothing parameters:
## alpha = 0.2265
## beta = 1e-04
##
## Initial states:
## l = 113.1102
## b = 1.2088
##
## sigma: 0.0271
##
## AIC AICc BIC
## 329.4144 330.8098 338.8735
accuracy(etsfit.PIB.ts)
## ME RMSE MAE MPE MAPE MASE
## Training set -0.1070473 3.774304 2.966711 -0.1073658 2.082458 0.8403785
## ACF1
## Training set 0.1977401
fcast.PIB.ts <- forecast(etsfit.PIB.ts)
#fcast.PIB.ts
plot(fcast.PIB.ts)
Usando ARIMA (sem usar a diferença):
arimafit.PIB.ts <- auto.arima(PIB.ts[(nrow(PIB.ts)-12*4):nrow(PIB.ts)])
fcast.ARIMA.PIB.ts <- forecast(arimafit.PIB.ts)
#fcast.ARIMA.PIB.ts
plot(fcast.ARIMA.PIB.ts)